package org.oppoweb.emf.ecore
{
     /**
     * An API for the backing store that holds dynamic values.
     */
    public interface ESFInternalDynamicValueHolder
    {
      /**
       * An object use to represent being set to null <code>null</code>  
       * as opposed to having no value and hence being in the default state.
       */
      var NIL:Object = new Object();

      /**
       * Returns the value of the feature.
       * @param dynamicFeatureID the feature's index in the cached dynamic values.
       * @return the value of the feature.
       */
      function dynamicGet(dynamicFeatureID:int):Object;

      /**
       * Sets the value of the feature to the new value.
       * @param dynamicFeatureID the feature's index in the cached dynamic values.
       * @param newValue the new value for the feature.
       */
      function dynamicSet(dynamicFeatureID:int, newValue:Object):void;

      /**
       * Unsets the value of the feature.
       * @param dynamicFeatureID the feature's index in the cached dynamic values.
       */
      function dynamicUnset(dynamicFeatureID:int):void;
    }
}